#include <stdio.h>
/*
 author: maxiao
 date: 2023-04-17 23:12
 description: 对数组进行选择排序
*/
#define N 10

int input_data(int* arr)
{
    int i;
    // 数据初始化
    printf("请输入10个整数：\n");
    for (i=0; i<N; i++)
    {
        printf("第%2d个数据:", i+1);
        scanf("%d", &arr[i]);
    }
    return 0;
}

int display(int* arr)
{
    int i;
    // 屏显数据
    for (i=0; i<N; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

int selection_sort(int* arr)
{
    int i,j,m;
    for (i=0; i<N-1; i++)
    {
        m=i; /*存放最小元素对应的索引*/
        for (j=i+1; j<N; j++)
        {
            // 比较前后两个数据的大小
            if (arr[m] > arr[j])
            {
                m=j; // 将较小元素对应的索引存放至m
            }
        }
        // 判断待排序数组的第一个元素与较小元素
        if ( arr[m] < arr[i] )
        {
            int tmp;
            tmp = arr[i];
            arr[i] = arr[m];
            arr[m] = tmp;
        }
    }
    printf("排序后的数据：");
    display(arr);
    return 0;
}

int main()
{
    int arr[N]={0};
    // 输入数据
    input_data(arr);
    // 排序
    selection_sort(arr);
    // 显示数据
    display(arr);
    return 0;
}
